Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Funzione di hash
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
La mwcqfunzione di hash produce una sequenza di mwcgbit (o una mwcwstringa), detta mwdadigest, strettamente correlata con i dati in ingresso. La parola deriva dal verbo inglese mwdqto hash, ovvero sminuzzare, pasticciare, che designa originariamente una polpettina fatta di avanzi di carne e verdure; per estensione, indica un composto eterogeneo cui viene data una forma incerta: mwdgTo make a hash of something vuol dire, infatti, creare confusione, o fare una cosa piuttosto male.

Contents

Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

In informatica

Nel linguaggio matematico e informatico, l'hash è una mwegfunzione non invertibile che mappa una mwewstringa di lunghezza arbitraria in una stringa di lunghezza predefinita. Esistono numerosi algoritmi che realizzano funzioni hash con particolari proprietà che dipendono dall'applicazione.

Nelle mwfqapplicazioni crittografiche si chiede, per esempio, che la funzione hash abbia le seguenti proprietà:

• resistenza alla preimmagine: sia computazionalmente intrattabile la ricerca di una stringa in input che dia un hash uguale a un dato hash;
• resistenza alla seconda preimmagine: sia computazionalmente intrattabile la ricerca di una stringa in input che dia un hash uguale a quello di una data stringa;
• resistenza alle collisioni: sia computazionalmente intrattabile la ricerca di una coppia di stringhe in input che diano lo stesso hash.

Nelle applicazioni di mwgwbasi di dati la funzione hash è usata per realizzare una particolare mwhastruttura dati chiamata mwhqhash table. In questa applicazione non occorrono proprietà crittografiche e generalmente l'unica proprietà richiesta è che non ci siano hash più probabili di altri.

L'hash è il metodo più semplice per verificare o garantire l'integrità di un file o cartella o l'intera immagine di un dispositivo (cioè che non siano stato modificati rispetto all'originalecite-ref-1[1], ad esempio da un malware o da un soggetto non autorizzato). Nel caso delle copie forensi delle informazioni l'integrità della prova è un requisito legale essenziale.

Hash uniforme semplice

Si definisce hash uniforme semplice quel tipo Hash in cui l'estrazione degli elementi in U è casuale, e la funzione hash

mwjg h : U → → { m } {\displaystyle h:U\to \left\{m\right\}}

estrae la chiave mwka m i {\displaystyle m_{i}} con probabilità mwkq 1 / | m | {\displaystyle 1/|m|}

In tali condizioni la ricerca della chiave avrà complessità costante O(1).

Algoritmo di hash

L'algoritmo di hash elabora qualunque mole di bit (in informatica si dice che elabora dati "grezzi"). Si tratta di una famiglia di algoritmi che soddisfa questi requisiti:

1. L'algoritmo restituisce una stringa di numeri e lettere a partire da un qualsiasi flusso di bit di qualsiasi dimensione (può essere un file, ma anche una stringa). L'output è detto mwlwdigest.
2. L'algoritmo non è invertibile, ossia non è possibile ricostruire il documento originale a partire dalla stringa che viene restituita in output ovvero è una mwmqfunzione unidirezionale, quest'ultima caratteristica non è indispensabile se si usano gli hash per controllare gli errori nei trasferimenti dei dati, dove le eventuali funzioni di criptaggio possono venir svolte in altre aree del protocollo.

Hash e collisioni

Non esiste una mwnacorrispondenza biunivoca tra l'hash e il testo. Dato che i testi possibili, con dimensione finita maggiore dell'hash, sono più degli hash possibili, per il mwnqprincipio dei cassetti ad almeno un hash corrisponderanno più testi possibili. Quando due testi producono lo stesso hash, si parla di mwngcollisione, e la qualità di una funzione di hash è misurata direttamente in base alla difficoltà nell'individuare due testi che generino una collisione. Per sconsigliare l'utilizzo di algoritmi di hashing in passato considerati sicuri è stato infatti sufficiente che un singolo gruppo di ricercatori riuscisse a generare una collisione. Questo è quello che è avvenuto ad esempio per gli algoritmi SNEFRU, mwoaMD2, mwoqMD4, mwogMD5 e mwowSHA-1.

Un hash crittograficamente sicuro non dovrebbe permettere di risalire, in un tempo confrontabile con l'utilizzo dell'hash stesso, ad un testo che possa generarlo.

Applicazioni

Hash e crittografia

La lunghezza dei valori di hash varia a seconda degli mwqqalgoritmi utilizzati. Il valore più comunemente adottato è di 128 mwqgbit, che offre una buona affidabilità in uno spazio relativamente ridotto. Tuttavia va registrata la possibilità d'uso di hash di dimensione maggiore (SHA, ad esempio, può anche fornire stringhe di 224, 256, 384 e 512 bit) e minore (che però è fortemente sconsigliato).

Le funzioni hash svolgono un ruolo essenziale nella mwracrittografia: sono utili per verificare l'integrità di un messaggio, poiché l'esecuzione dell'algoritmo su un testo anche minimamente modificato fornisce un mwrqmessage digest completamente differente rispetto a quello calcolato sul testo originale, rivelando la tentata modifica.

Le funzioni di hash possono essere anche utilizzate per la creazione di mwrwfirme digitali, in quanto permettono la rapida creazione della firma anche per file di grosse dimensioni, senza richiedere calcoli lunghi e complessi: è infatti computazionalmente più conveniente eseguire con rapidità un hashing del testo da firmare, e poi autenticare solo quello, evitando così l'esecuzione dei complessi algoritmi di mwsacrittografia asimmetrica su moli di dati molto grandi.

La mwsgfirma digitale è definita come il mwswdigest di un documento che poi viene crittografato con chiave privata (e non con quella pubblica, come avviene di solito). La firma digitale è l'unico caso in cui l'uso delle chiavi è invertito: la chiave pubblica serve a decrittare la firma e trovare poi il mwtadigest iniziale attraverso l'hash, mentre quella privata serve a crittografare una stringa anziché ad aprirla.

L'hashing è usato anche nelle procedure di mwtgautenticazione in quanto l'elemento segreto (la password ad esempio) è trasformato nel suo hash non appena è stato introdotto (quindi non passa in chiaro) e questo è confrontato con quello conservato (ad esempio nel database o in un file) quando l'elemento segreto è stato creato/modificato.

Un ulteriore uso delle funzioni di hash si ha nella derivazione di chiavi da password o mwuapassphrase: a partire da un valore arbitrario in ingresso (una stringa o un mwuqarray di larghe dimensioni) si deriva in modo crittograficamente sicuro (ovvero non è possibile abbreviare il calcolo con una qualche scorciatoia) una chiave di dimensioni adatte alla cifratura. È appena il caso di dire, tuttavia, che a meno di prendere debite contromisure (come l'uso di un mwugsalt crittografico), l'utilità di questa procedura è esclusivamente pratica: infatti la sicurezza della chiave derivata è equivalente a quella della stringa di ingresso ai fini di un mwuwattacco a dizionario. Di contro, è certamente più comodo per un essere umano ricordare una stringa piuttosto che una lunga sequenza numerica.

Sicurezza delle funzioni hash

Nel contesto delle funzioni hash, ci si riferisce a diversi concetti di sicurezza:

• Sicurezza debole: dato un messaggio mwwa M {\displaystyle M} , è computazionalmente "difficile" trovare un secondo messaggio mwwq M ′ {\displaystyle M'} tale che mwwg h ( M ) = h ( M ′ ) {\displaystyle h(M)=h(M')} .
• Sicurezza forte: è computazionalmente "difficile" trovare una coppia di messaggi mwxa M {\displaystyle M} , mwxq M ′ {\displaystyle M'} tali che mwxg h ( M ) = h ( M ′ ) {\displaystyle h(M)=h(M')} .

Questi due concetti di sicurezza vengono distinti anche per via degli effetti che essi possono produrre nel caso in cui ne siano privi: per quanto riguarda ad esempio la possibilità di effettuare una firma digitale, un algoritmo che non garantisca la sicurezza forte, ma quella debole, sarebbe comunque utile dal momento che il messaggio mwya M {\displaystyle M} non può essere "controllato" e bisognerebbe quindi trovare un secondo messaggio mwyq M ′ {\displaystyle M'} con uguale funzione di hash, il che sarebbe appunto computazionalmente difficile.

Hash e basi di dati

È possibile utilizzare le funzioni di hash per creare una mwzahash table, che è una struttura dati molto efficiente per le operazioni di ricerca. La hash table contiene dati associati ad una chiave di ricerca e viene spesso utilizzato nei mwzqdatabase per indicizzare gli elementi che saranno oggetto di ricerca. Questa tecnica (detta di hashing) permette di realizzare funzioni di ricerca che riescono ad individuare l'elemento desiderato in un tempo costante, indipendente (almeno in teoria) dal numero di elementi presenti nell'indice.

Protezione dagli errori

L'uso delle funzioni hash per trovare errori nelle trasmissioni è molto comune. La funzione hash viene calcolata dal mittente a partire dai dati e il suo valore è inviato insieme ai dati. Il ricevente calcola di nuovo la funzione hash, e se i valori hash non corrispondono, significa che è avvenuto un errore durante la trasmissione. Questo metodo consente un controllo dell'integrità dei dati migliore della più tradizionale mwaachecksum.

Informatica forense

Gli algoritmi di hash, in particolare mwawSHA1 e mwbaMD5, sono largamente utilizzati nell'ambito dell'mwbqinformatica forense per validare e ottenere una 'impronta digitale' dei dati acquisiti, tipicamente le mwbgcopie forensi. La recente legislazione impone infatti una catena di custodia che permetta di preservare i reperti informatici da eventuali modifiche successive all'acquisizione: tramite i codici hash è possibile in ogni momento verificare che quanto repertato sia rimasto immutato nel tempo. Se i codici hash corrispondono, entrambe le parti in un procedimento giudiziario hanno la ragionevole certezza di lavorare sulla stessa versione dei reperti, garantendo quindi una uniformità di analisi e in genere di risultati. I risultati dei codici hash vengono ormai calcolati di default dalla maggioranza dei software per acquisizione forense e allegati alle copie forensi salvate.

Elenco di hash e documenti correlati

MD2cite-ref-2[2]
MD4cite-ref-3[3]
MD5cite-ref-4[4]cite-ref-5[5]cite-ref-6[6]
MDC-2cite-ref-7[7]
SHA-1cite-ref-8[8]cite-ref-9[9]cite-ref-10[10]
SHA-2 (256, 384, 512)cite-ref-11[11]
RIPEMD-160cite-ref-12[12]
• PANAMAcite-ref-13[13]
• TIGERcite-ref-14[14]
• ADLER32cite-ref-15[15]
HMACcite-ref-16[16]cite-ref-17[17]cite-ref-18[18]cite-ref-19[19]cite-ref-20[20]cite-ref-rfc2085-21-0[21]cite-ref-22[22]cite-ref-23[23]cite-ref-24[24]

Note

cite-note-11. Modificando unicamente la data di un documento l'hash cambia e questo permette di scoprire datazioni successive alla prima pubblicazione.
cite-note-22. mw1gRFC1319 - The MD2 Message-Digest Algorithm
cite-note-33. mw2gRFC1320 - The MD4 Message-Digest Algorithm
cite-note-44. mw3gRFC1321 - The MD5 Message-Digest Algorithm
cite-note-55. mw4gRFC1810 - Report on MD5 Performance
cite-note-66. mw5gRFC1828 - IP Authentication using Keyed MD5
cite-note-77. MDC-2 - Modification Detection Code
cite-note-88. FIPS PUB 180-1 - SECURE HASH STANDARD
cite-note-99. mw8aRFC3174 - US Secure Hash Algorithm 1 (SHA1)
cite-note-1010. mw9aRFC1852 - IP Authentication using Keyed
cite-note-1111. mw-aDFIPS PUB 180-2 - SECURE HASH STANDARD
cite-note-1212. The RIPEMD-160 Home Page
cite-note-1313. mw-wmwaqamwaqeFast Hashing and Stream Encryption with PANAMA, by J.Daemen, C.Clapp (mwaqimwaqmPDF), su mwaqqstandard.pictel.com mwaqu(archiviato dall'mwaqyurl originale il 6 luglio 2001).
cite-note-1414. mwaqomwaqsmwaqwTiger: A Fast New Hash Function The Tiger Home Page, su mwaq0cs.technion.ac.il. mwaq4URL consultato il 21 gennaio 2005 mwaq8(archiviato dall'mwaraurl originale il 25 ottobre 2005).
cite-note-1515. mwarqRFC1950 - ZLIB Compressed Data Format Specification version 3.3
cite-note-1616. (attenzione: HMAC non è propriamente una funzione di hash, poiché per eseguirlo è necessario non solo il testo in chiaro, ma anche una chiave. Gli algoritmi di hash richiedono un mwargunico parametro di ingresso)
cite-note-1717. mwarwFIPS PUB 198 - The Keyed-Hash Message Authentication Code (HMAC)
cite-note-1818. mwasaRFC2104 - HMAC: Keyed-Hashing for Message Authentication
cite-note-1919. mwasqRFC2202 - Test Cases for HMAC-MD5 and HMAC-SHA-1
cite-note-2020. mwasgRFC2286 - Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128
cite-note-rfc2085-2121. mwaswRFC2085 - HMAC-MD5 IP Authentication with Replay Prevention
cite-note-2222. mwataRFC2403 - The Use of HMAC-MD5-96 within ESP and AH
cite-note-2323. mwatqRFC2404 mwatuArchiviatomwaty il 9 febbraio 2005 in mwatcInternet Archivemwatg. - The Use of HMAC-SHA-1-96 within ESP and AH
cite-note-2424. mwat0RFC2857 - The Use of HMAC-RIPEMD-160-96 within ESP and AH

Voci correlate

• mwaumCrittografia
• mwauuHash table
• mwausHashcash
• mwau0Rolling hash

Altri progetti

Altri progetti

• Wikiversità
• Wikimedia Commons

• Wikiversità contiene risorse sulla funzione di hash
• Wikimedia Commons contiene immagini o altri file sulla funzione di hash

Collegamenti esterni

• citerefmathworld(EN) Eric W. Weisstein, Hash Function, su MathWorld, Wolfram Research.
• citereffoldoc(EN) Denis Howe, hash function, in Free On-line Dictionary of Computing. Disponibile con licenza mwavyGFDL
• mwavg(EN) Definizione inglese del termine, su dictionary.cambridge.org. URL consultato il 7 novembre 2005 (archiviato dall'url originale il 13 marzo 2007).
• mwavo(EN) mwavsHash'em all!, per calcolare online l'hash di stringhe e file
• mwav0Hash Generatore Altro Online Hash Generatore, ha alcune funzioni di hash come md2,md4,md5,sha1,snefru, tiger, haval, ripemd, whirlpool e tra gli altri. Circa 118 differenti algoritmi
• mwav8Daniele Frongia e Raffaello Martinelli, Funzioni hash con PHP, su segnalazionit.org, 9 ottobre 2008. URL consultato il 13 ottobre 2022 (archiviato dall'url originale il 23 marzo 2016).
• mwaweProgramma gratuito per calcolo e verifica hash, su ocr.altervista.org. URL consultato il 15 aprile 2010 (archiviato dall'url originale il 7 maggio 2010).
• mwawmChecksums calculator Applicazione gratuita per il calcolo e verifica di funzioni hash per Windows, Linux e Mac OS X.